package com.huluwa.picture.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.huluwa.common.core.domain.model.LoginUser;
import com.huluwa.picture.model.dto.space.analyze.*;
import com.huluwa.picture.model.entity.Space;
import com.huluwa.picture.model.vo.analyze.*;

import java.util.List;

/**
 * @Classname SpaceAnalyzeService
 * @Date 2025-01-24 22:20
 * @Created by luyifan
 */
public interface SpaceAnalyzeService extends IService<Space> {


    /**
     * 检查是否有空间权限
     * @param spaceAnalyzeRequest
     * @param loginUser
     */
    void checkSpaceAnalyzeAuth(SpaceAnalyzeRequest spaceAnalyzeRequest, LoginUser loginUser);


    /**
     *  图片资源使用分析
     * @param spaceUsageAnalyzeRequest
     * @param loginUser
     * @return
     */
    SpaceUsageAnalyzeResponse getSpaceUsageAnalyze(SpaceUsageAnalyzeRequest spaceUsageAnalyzeRequest, LoginUser loginUser);


    /**
     *  图片分类使用信息
     * @param spaceCategoryAnalyzeRequest
     * @param loginUser
     * @return
     */
    List<SpaceCategoryAnalyzeResponse> getSpaceCategoryAnalyze(SpaceCategoryAnalyzeRequest spaceCategoryAnalyzeRequest, LoginUser loginUser);

    /**
     * 图片标签使用信息
     * @param spaceTagAnalyzeRequest
     * @param loginUser
     * @return
     */
    List<SpaceTagAnalyzeResponse> getSpaceTagAnalyze(SpaceTagAnalyzeRequest spaceTagAnalyzeRequest, LoginUser loginUser);


    /**
     * 图片大小使用信息
     * @param spaceSizeAnalyzeRequest
     * @param loginUser
     * @return
     */
    List<SpaceSizeAnalyzeResponse> getSpaceSizeAnalyze(SpaceSizeAnalyzeRequest spaceSizeAnalyzeRequest, LoginUser loginUser);


    /**
     * 用户使用分析
     * @param spaceUserAnalyzeRequest
     * @param loginUser
     * @return
     */
    List<SpaceUserAnalyzeResponse> getSpaceUserAnalyze(SpaceUserAnalyzeRequest spaceUserAnalyzeRequest, LoginUser loginUser);


    /**
     * 空间使用排行
     * @param spaceRankAnalyzeRequest
     * @param loginUser
     * @return
     */
    List<Space> getSpaceRankAnalyze(SpaceRankAnalyzeRequest spaceRankAnalyzeRequest, LoginUser loginUser);
}
